package com.lee.blepwm.activity;

import android.app.Activity;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback;
import android.bluetooth.BluetoothGattCharacteristic;
import android.bluetooth.BluetoothGattService;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;

import com.blankj.utilcode.util.LogUtils;
import com.kongqw.rockerlibrary.view.RockerView;
import com.lee.blepwm.Contant.Instructions;

public class Test {


//                if (angle >= 22.5 && angle < 67.5) {
//
//        pwm1 = -s + chaSu + middle;
//        pwm2 = -s + middle;
//        lo = 1;
//
//    } else if (angle >= 67.5 && angle < 112.5) {
//        //down
//        pwm1 = pwm2 = -s + middle;
//        lo = 2;
//    } else if (angle >= 112.5 && angle < 157.5) {
//        pwm1 = -s + middle;
//        pwm2 = -s + chaSu + middle;
//        lo = 3;
//    } else if (angle >= 157.5 && angle < 202.5) {
//        // left
//        pwm1 = s + middle;
//        pwm2 = -s + middle;
//        lo = 4;
//    } else if (angle >= 202.5 && angle < 247.5) {
//        pwm1 = s - chaSu + middle;
//        pwm2 = s + middle;
//        lo = 5;
//    } else if (angle >= 247.5 && angle < 292.5) {
//        //up
//        pwm1 = pwm2 = s + middle;
//        lo = 6;
//    } else if (angle >= 292.5 && angle < 337.5) {
//        pwm1 = s + middle;
//        pwm2 = s - chaSu + middle;
//        lo = 7;
//    } else {
//        //right
//        pwm1 = -s + middle;
//        pwm2 = s + middle;
//        lo = 8;
//    }


//
//    private BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
//
//        @Override
//        public void onConnectionStateChange(BluetoothGatt mBluetoothGatt, int status, int newState) {
//            //等待设备连接成功
//            if (newState == BluetoothGatt.STATE_CONNECTED) {
//                LogUtils.e("设备连接上:开始扫描服务");
//                // 开始扫描服务，安卓蓝牙开发重要步骤之一
//                mBluetoothGatt.discoverServices();
//            } else if (newState == BluetoothGatt.STATE_DISCONNECTED) {
//                // 连接断开
//                /*连接断开后的相应处理*/
////                mBluetoothGatt.close();
//                LogUtils.e("连接断开");
//            } else if (newState == BluetoothGatt.STATE_CONNECTING) {
//                LogUtils.e("设备连接中...");
//            } else {
//                LogUtils.e("未知状态...");
//            }
//
//        }
//
//        @Override
//        public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
//            if (status == BluetoothGatt.GATT_SUCCESS) {
//                LogUtils.e("发送成功");
//            }
//            super.onCharacteristicWrite(gatt, characteristic, status);
//        }
//
//        @Override
//        public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
//            super.onCharacteristicRead(gatt, characteristic, status);
//            //通知系统去读取特定的数据
//            try {
//                LogUtils.d("------------------start----------------------- ");
//                byte[] bytes = characteristic.getValue() == null ? "".getBytes() : characteristic.getValue();
//                String value = guessEncoding(bytes);
//                LogUtils.d("read value: " + value);
//                LogUtils.d("------------------end----------------------- ");
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//            if (status == BluetoothGatt.GATT_SUCCESS) {
//            }
//        }
//
//        @Override
//        public void onServicesDiscovered(BluetoothGatt gatt, int status) {
//            //设备连接成功后调用，扫描到设备服务后回调onServicesDiscovered()函数
////            List<BluetoothGattService> services = gatt.getServices();
////            for (int i = 0; i < services.size(); i++) {
////                Log.e(TAG, "-----------------------start-----------------------");
////                BluetoothGattService bluetoothGattService = services.get(i);
////                Log.e(TAG, "服务UUID: " + bluetoothGattService.getUuid());
////
////                List<BluetoothGattCharacteristic> characteristics = bluetoothGattService.getCharacteristics();
////                for (int j = 0; j < characteristics.size(); j++) {
////                    BluetoothGattCharacteristic bluetoothGattCharacteristic = characteristics.get(j);
////                    gatt.readCharacteristic(bluetoothGattCharacteristic);
////                    Log.e(TAG, "特征UUID: " + bluetoothGattCharacteristic.getUuid() + " ==== value: " + bluetoothGattCharacteristic.getValue());
////
////                    for (int k = 0; k < bluetoothGattCharacteristic.getDescriptors().size(); k++) {
////                        BluetoothGattDescriptor bluetoothGattDescriptor = bluetoothGattCharacteristic.getDescriptors().get(k);
////                        gatt.readDescriptor(bluetoothGattDescriptor);
////                        Log.e(TAG, "配置UUID: " + bluetoothGattDescriptor.getUuid() + " ==== value: " + bluetoothGattCharacteristic.getValue());
////                    }
////                }
////                Log.e(TAG, "-----------------------stop-----------------------");
////            }
//
//
//            gatts = gatt;
//
//            BluetoothGattService service = gatt.getService(Instructions.SERVICE_UUID);//服务 UUID
//            configCharacteristic = service.getCharacteristic(Instructions.CONFIG_UUID);
//
////            gatt.setCharacteristicNotification(notifyCharacteristic, true);
//            gatt.setCharacteristicNotification(configCharacteristic, true);
////            gatt.setCharacteristicNotification(writeCharacteristic, true);
//
////            byte[] str = new byte[]{-22, -88};
//
////            configCharacteristic.setValue(Instructions.SETTING_START_PWM);
////            configCharacteristic.setValue(Instructions.SETTING_START_PWM);
//
//
//            configCharacteristic.setValue(new byte[]{(byte) 0xE8, (byte) 0xA1, 0x01});
//            configCharacteristic.setValue(new byte[]{(byte) 0xE8, (byte) 0xA2, 0x00, 0x32});
//            configCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
//            boolean b = gatt.writeCharacteristic(configCharacteristic);
//            LogUtils.e("PWM 打开: " + b);
//
////            notifyCharacteristic.setValue(Instructions.READ_PWM_STATUS);
////            notifyCharacteristic.setValue("E8A8");
//
//        }
//
//        @Override
//        public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
//            //若发送的数据符合通信协议，则下位机会向上位机回复相应的数据
//            // value为设备发送的数据，根据数据协议进行解析
//            byte[] value = characteristic.getValue();
//            String str = new String(value);
//            LogUtils.e("onCharacteristicChanged:  " + str);
//        }
//    };
//
//    //字符串转byte数组
//    public byte[] hexToByteArray(String inHex) {
//        int hexlen = inHex.length();
//        byte[] result;
//        if (hexlen % 2 == 1) {
//            //奇数
//            hexlen++;
//            result = new byte[(hexlen / 2)];
//            inHex = "0" + inHex;
//        } else {
//            //偶数
//            result = new byte[(hexlen / 2)];
//        }
//        int j = 0;
//        for (int i = 0; i < hexlen; i += 2) {
//            result[j] = hexToByte(inHex.substring(i, i + 2));
//            j++;
//        }
//        return result;
//    }
//
//    public byte hexToByte(String inHex) {
//        return (byte) Integer.parseInt(inHex, 16);
//    }
//
//
//    public static String guessEncoding(byte[] bytes) throws Exception {
//        String DEFAULT_ENCODING = "UTF-8";
//        org.mozilla.universalchardet.UniversalDetector detector =
//                new org.mozilla.universalchardet.UniversalDetector(null);
//        detector.handleData(bytes, 0, bytes.length);
//        detector.dataEnd();
//        String encoding = detector.getDetectedCharset();
//        detector.reset();
//        if (encoding == null) {
//            encoding = DEFAULT_ENCODING;
//        }
//        LogUtils.i(encoding);
//        return new String(bytes, encoding);
//    }
//
//    private String getDirection(RockerView.Direction direction) {
//        String message = null;
//        switch (direction) {
//            case DIRECTION_LEFT:
//                message = "左";
//                break;
//            case DIRECTION_RIGHT:
//                message = "右";
//                break;
//            case DIRECTION_UP:
//                message = "上";
//                break;
//            case DIRECTION_DOWN:
//                message = "下";
//                break;
//            case DIRECTION_UP_LEFT:
//                message = "左上";
//                break;
//            case DIRECTION_UP_RIGHT:
//                message = "右上";
//                break;
//            case DIRECTION_DOWN_LEFT:
//                message = "左下";
//                break;
//            case DIRECTION_DOWN_RIGHT:
//                message = "右下";
//                break;
//            default:
//                break;
//        }
//        return message;
//    }
//
//    //调用函数缩小图片
//    public BitmapDrawable getNewDrawable(Activity context, int restId, int dstWidth, int dstHeight) {
//        Bitmap Bmp = BitmapFactory.decodeResource(
//                context.getResources(), restId);
//        Bitmap bmp = Bmp.createScaledBitmap(Bmp, dstWidth, dstHeight, true);
//        BitmapDrawable d = new BitmapDrawable(bmp);
//        Bitmap bitmap = d.getBitmap();
//        if (bitmap.getDensity() == Bitmap.DENSITY_NONE) {
//            d.setTargetDensity(context.getResources().getDisplayMetrics());
//        }
//        return d;
//    }
//
//    @Override
//    protected void onDestroy() {
//        super.onDestroy();
//        if (device != null && bluetoothGatt != null) {
//            bluetoothGatt.disconnect();
//            LogUtils.i("主动断开连接");
//        }
//    }
}
